1
안전하지 않은 러스트의 필요성
AI034Lesson 19
00:00

내부에 숨겨진 언어

러스트에는 비밀이 있습니다. 실제로는 한 가지 언어 속에 두 가지 언어가 존재합니다. 안전한 러스트는 당신의 보호자지만, 러스트 컴파일러는 본질적으로 보수적입니다. 그것은 엄격한 철학을 따릅니다: 단 하나의 위험한 프로그램을 우연히 허용하는 것보다, 유효하고 안전한 프로그램을 거부하는 것이 낫다고 생각합니다. 이로 인해 하드웨어가 할 수 있는 일과 컴파일러가 증명할 수 있는 일이 사이에 격차가 생깁니다.

엄격한 현실

컴파일러를 엄격한 게이트키퍼처럼 상상해 보세요. 우리의 코드 예제에서 매치 가드 if y 전체 패턴 그룹에 적용됩니다 (4 | 5 | 6). 이러한 엄격한 우선순위 는 빌로우 체커(소유권 검사기)의 작동 방식을 반영합니다. 메모리에 대해 전역적이고 양보 없는 규칙을 적용합니다. 하지만 기반의 컴퓨터 하드웨어는 본질적으로 안전하지 않습니다; 소유권이나 수명 개념을 이해하지 못합니다. 고성능 도구를 구축하기 위해, 예를 들어 split_at_mut와 같은 도구를 만들기 위해서는 우리는 안전하지 않은 러스트 ‘탈출구’로 들어가야 합니다. 이는 기술적으로 타당하지만 컴파일러의 정적 분석으로는 논리적으로 너무 복잡한 작업을 수행하기 위함입니다.

모든 기술적으로 안전한 코드증명된 안전 (소유권 검사기)안전하지 않은 것의 필요성

빨간 원과 초록 원 사이의 간격은 안전하지 않은 러스트가 존재하는 곳입니다. 정적 분석이 실패했을 때, 하드웨어의 최대 잠재력을 발휘할 수 있게 해줍니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>